Язык запросов для API, который использует структуру графа для хранения данных
Как и REST распространён при разработке приложений
Не регламентирует аутентификацию и авторизацию
Шаблоны проверки подлинности похожи на REST
В GraphQL клиент сам определяет, какие именно данные ему нужны, а не получает фиксированный ответ, как в REST.
Аутентификация – обычно через Bearer token (JWT)
Уязвимость - DoS через сложные запросы (nested queries)
Запрос
query {
user(id: "1") {
name
email
posts {
title
createdAt
}
}
}
Ответ
{
"data": {
"user": {
"name": "Ivan",
"email": "ivan@example.com",
"posts": [
{ "title": "GraphQL Intro", "createdAt": "2023-01-01" },
{ "title": "REST vs GraphQL", "createdAt": "2023-01-10" }
]
}
}
}